﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DATipoAlteracionLitologica : Base
    {
        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de TipoAlteracionLitologica
        /// </summary>
        /// <returns></returns>
        public List<TipoAlteracionLitologica> ListarTipoAlteracionLitologica()
        {
            return this.Context.TipoAlteracionLitologica.ToList();
        }
        /// <summary>
        /// Método para insertar una TipoAlteracionLitologica
        /// </summary>
        /// <param name="TipoAlteracionLitologica"></param>
        /// <returns></returns>
        public int InsertarTipoAlteracionLitologica(TipoAlteracionLitologica tipoAlteracionLitologica)
        {
            this.Context.TipoAlteracionLitologica.AddObject(tipoAlteracionLitologica);
            this.Context.SaveChanges();
            return tipoAlteracionLitologica.CodigoTipoAlteracionLitologica;
        }
        /// <summary>
        /// Método para modificar un TipoAlteracionLitologica
        /// </summary>
        /// <param name="TipoAlteracionLitologica"></param>
        public void ModificarTipoAlteracionLitologica(TipoAlteracionLitologica tipoAlteracionLitologica)
        {
            this.Context.TipoAlteracionLitologica.Attach(tipoAlteracionLitologica);
            this.Context.ObjectStateManager.ChangeObjectState(tipoAlteracionLitologica, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método para eliminar TipoAlteracionLitologica
        /// </summary>
        /// <param name="TipoAlteracionLitologica"></param>
        public void EliminarTipoAlteracionLitologica(TipoAlteracionLitologica tipoAlteracionLitologica)
        {
            this.Context.TipoAlteracionLitologica.Attach(tipoAlteracionLitologica);
            this.Context.TipoAlteracionLitologica.DeleteObject(tipoAlteracionLitologica);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método que busca por nombre TipoAlteracionLitologica
        /// </summary>
        /// <param name="nombre"></param>
        /// <returns></returns>
        public List<TipoAlteracionLitologica> BuscarTipoAlteracionLitologica(string descripcion)
        {
            return this.Context.TipoAlteracionLitologica.Where(x => x.Descripcion.StartsWith(descripcion)).ToList();
        }
        /// <summary>
        /// Método que devuelve TipoAlteracionLitologica por codigo
        /// </summary>
        /// <param name="codigoTipoAlteracionLitologica"></param>
        /// <returns></returns>
        public TipoAlteracionLitologica ObtenerTipoAlteracionLitologica(int codigoTipoAlteracionLitologica)
        {
            return this.Context.TipoAlteracionLitologica.Where(x => x.CodigoTipoAlteracionLitologica.Equals(codigoTipoAlteracionLitologica)).FirstOrDefault();
        }
        #endregion
    }
}
